System.register([], function (_export) {
'use strict';
var BrowserMutationObserver, hasSetImmediate, TaskQueue;
function _classCallCheck(instance, Constructor) { Iif (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
function makeRequestFlushFromMutationObserver(flush) {
var toggle = 1;
var observer = new BrowserMutationObserver(flush);
var node = document.createTextNode('');
observer.observe(node, { characterData: true });
return function requestFlush() {
toggle = -toggle;
node.data = toggle;
};
}
function makeRequestFlushFromTimer(flush) {
return function requestFlush() {
// We dispatch a timeout with a specified delay of 0 for engines that
// can reliably accommodate that request. This will usually be snapped
// to a 4 milisecond delay, but once we're flushing, there's no delay
// between events.
var timeoutHandle = setTimeout(handleFlushTimer, 0);
// However, since this timer gets frequently dropped in Firefox
// workers, we enlist an interval handle that will try to fire
// an event 20 times per second until it succeeds.
var intervalHandle = setInterval(handleFlushTimer, 50);
function handleFlushTimer() {
// Whichever timer succeeds will cancel both timers and request the
// flush.
clearTimeout(timeoutHandle);
clearInterval(intervalHandle);
flush();
}
};
}
return {
setters: [],
execute: function () {
BrowserMutationObserver = window.MutationObserver || window.WebKitMutationObserver;
hasSetImmediate = typeof setImmediate === 'function';
TaskQueue = (function () {
function TaskQueue() {
var _this = this;
_classCallCheck(this, TaskQueue);
this.microTaskQueue = [];
this.microTaskQueueCapacity = 1024;
this.taskQueue = [];
Eif (typeof BrowserMutationObserver === 'function') {
this.requestFlushMicroTaskQueue = makeRequestFlushFromMutationObserver(function () {
return _this.flushMicroTaskQueue();
});
} else {
this.requestFlushMicroTaskQueue = makeRequestFlushFromTimer(function () {
return _this.flushMicroTaskQueue();
});
}
this.requestFlushTaskQueue = makeRequestFlushFromTimer(function () {
return _this.flushTaskQueue();
});
}
TaskQueue.prototype.queueMicroTask = function queueMicroTask(task) {
if (this.microTaskQueue.length < 1) {
this.requestFlushMicroTaskQueue();
}
this.microTaskQueue.push(task);
};
TaskQueue.prototype.queueTask = function queueTask(task) {
if (this.taskQueue.length < 1) {
this.requestFlushTaskQueue();
}
this.taskQueue.push(task);
};
TaskQueue.prototype.flushTaskQueue = function flushTaskQueue() {
var queue = this.taskQueue,
index = 0,
task;
this.taskQueue = []; //recursive calls to queueTask should be scheduled after the next cycle
while (index < queue.length) {
task = queue[index];
try {
task.call();
} catch (error) {
this.onError(error, task);
}
index++;
}
};
TaskQueue.prototype.flushMicroTaskQueue = function flushMicroTaskQueue() {
var queue = this.microTaskQueue,
capacity = this.microTaskQueueCapacity,
index = 0,
task;
while (index < queue.length) {
task = queue[index];
try {
task.call();
} catch (error) {
this.onError(error, task);
}
index++;
// Prevent leaking memory for long chains of recursive calls to `queueMicroTask`.
// If we call `queueMicroTask` within a MicroTask scheduled by `queueMicroTask`, the queue will
// grow, but to avoid an O(n) walk for every MicroTask we execute, we don't
// shift MicroTasks off the queue after they have been executed.
// Instead, we periodically shift 1024 MicroTasks off the queue.
if (index > capacity) {
// Manually shift all values starting at the index back to the
// beginning of the queue.
for (var scan = 0; scan < index; scan++) {
queue[scan] = queue[scan + index];
}
queue.length -= index;
index = 0;
}
}
queue.length = 0;
};
TaskQueue.prototype.onError = function onError(error, task) {
Eif ('onError' in task) {
task.onError(error);
} else if (hasSetImmediate) {
setImmediate(function () {
throw error;
});
} else {
setTimeout(function () {
throw error;
}, 0);
}
};
return TaskQueue;
})();
_export('TaskQueue', TaskQueue);
}
};
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL3Rhc2stcXVldWUvc3JjL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztNQUFJLHVCQUF1QixFQUN2QixlQUFlLEVBa0NOLFNBQVM7Ozs7QUFoQ3RCLFdBQVMsb0NBQW9DLENBQUMsS0FBSyxFQUFFO0FBQ25ELFFBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNmLFFBQUksUUFBUSxHQUFHLElBQUksdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEQsUUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN2QyxZQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0FBQzlDLFdBQU8sU0FBUyxZQUFZLEdBQUc7QUFDN0IsWUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDO0FBQ2pCLFVBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO0tBQ3BCLENBQUM7R0FDSDs7QUFFRCxXQUFTLHlCQUF5QixDQUFDLEtBQUssRUFBRTtBQUN4QyxXQUFPLFNBQVMsWUFBWSxHQUFHOzs7OztBQUs3QixVQUFJLGFBQWEsR0FBRyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUM7Ozs7QUFJcEQsVUFBSSxjQUFjLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZELGVBQVMsZ0JBQWdCLEdBQUc7OztBQUcxQixvQkFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzVCLHFCQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDOUIsYUFBSyxFQUFFLENBQUM7T0FDVDtLQUNGLENBQUM7R0FDSDs7Ozs7QUFqQ0csNkJBQXVCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixJQUFJLE1BQU0sQ0FB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QUksR0FBRyxLQUFLLENBQUMsQ0FBQztlQUNyQzs7QUFFRCxtQkFBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7QUFDdEIsbUJBQUssR0FBRyxDQUFDLENBQUM7YUFDYjtXQUNGOztBQUVELGVBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ2xCOztBQXRGVSxpQkFBUyxXQXdGcEIsT0FBTyxHQUFBLGlCQUFDLEtBQUssRUFBRSxJQUFJLEVBQUM7QUFDbEIsY0FBRyxTQUFTLElBQUksSUFBSSxFQUFDO0FBQ25CLGdCQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1dBQ3JCLE1BQU0sSUFBSSxlQUFlLEVBQUU7QUFDMUIsd0JBQVksQ0FBQyxZQUFNO0FBQUUsb0JBQU0sS0FBSyxDQUFDO2FBQUUsQ0FBQyxDQUFDO1dBQ3RDLE1BQU07QUFDTCxzQkFBVSxDQUFDLFlBQU07QUFBRSxvQkFBTSxLQUFLLENBQUM7YUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1dBQ3ZDO1NBQ0Y7O2VBaEdVLFNBQVM7OzsyQkFBVCxTQUFTIiwiZmlsZSI6Ii9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL3Rhc2stcXVldWUvc3JjL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIEJyb3dzZXJNdXRhdGlvbk9ic2VydmVyID0gd2luZG93Lk11dGF0aW9uT2JzZXJ2ZXIgfHwgd2luZG93LldlYktpdE11dGF0aW9uT2JzZXJ2ZXI7XG52YXIgaGFzU2V0SW1tZWRpYXRlID0gdHlwZW9mIHNldEltbWVkaWF0ZSA9PT0gJ2Z1bmN0aW9uJztcblxuZnVuY3Rpb24gbWFrZVJlcXVlc3RGbHVzaEZyb21NdXRhdGlvbk9ic2VydmVyKGZsdXNoKSB7XG4gIHZhciB0b2dnbGUgPSAxO1xuICB2YXIgb2JzZXJ2ZXIgPSBuZXcgQnJvd3Nlck11dGF0aW9uT2JzZXJ2ZXIoZmx1c2gpO1xuICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTtcbiAgb2JzZXJ2ZXIub2JzZXJ2ZShub2RlLCB7Y2hhcmFjdGVyRGF0YTogdHJ1ZX0pO1xuICByZXR1cm4gZnVuY3Rpb24gcmVxdWVzdEZsdXNoKCkge1xuICAgIHRvZ2dsZSA9IC10b2dnbGU7XG4gICAgbm9kZS5kYXRhID0gdG9nZ2xlO1xuICB9O1xufVxuXG5mdW5jdGlvbiBtYWtlUmVxdWVzdEZsdXNoRnJvbVRpbWVyKGZsdXNoKSB7XG4gIHJldHVybiBmdW5jdGlvbiByZXF1ZXN0Rmx1c2goKSB7XG4gICAgLy8gV2UgZGlzcGF0Y2ggYSB0aW1lb3V0IHdpdGggYSBzcGVjaWZpZWQgZGVsYXkgb2YgMCBmb3IgZW5naW5lcyB0aGF0XG4gICAgLy8gY2FuIHJlbGlhYmx5IGFjY29tbW9kYXRlIHRoYXQgcmVxdWVzdC4gVGhpcyB3aWxsIHVzdWFsbHkgYmUgc25hcHBlZFxuICAgIC8vIHRvIGEgNCBtaWxpc2Vjb25kIGRlbGF5LCBidXQgb25jZSB3ZSdyZSBmbHVzaGluZywgdGhlcmUncyBubyBkZWxheVxuICAgIC8vIGJldHdlZW4gZXZlbnRzLlxuICAgIHZhciB0aW1lb3V0SGFuZGxlID0gc2V0VGltZW91dChoYW5kbGVGbHVzaFRpbWVyLCAwKTtcbiAgICAvLyBIb3dldmVyLCBzaW5jZSB0aGlzIHRpbWVyIGdldHMgZnJlcXVlbnRseSBkcm9wcGVkIGluIEZpcmVmb3hcbiAgICAvLyB3b3JrZXJzLCB3ZSBlbmxpc3QgYW4gaW50ZXJ2YWwgaGFuZGxlIHRoYXQgd2lsbCB0cnkgdG8gZmlyZVxuICAgIC8vIGFuIGV2ZW50IDIwIHRpbWVzIHBlciBzZWNvbmQgdW50aWwgaXQgc3VjY2VlZHMuXG4gICAgdmFyIGludGVydmFsSGFuZGxlID0gc2V0SW50ZXJ2YWwoaGFuZGxlRmx1c2hUaW1lciwgNTApO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUZsdXNoVGltZXIoKSB7XG4gICAgICAvLyBXaGljaGV2ZXIgdGltZXIgc3VjY2VlZHMgd2lsbCBjYW5jZWwgYm90aCB0aW1lcnMgYW5kIHJlcXVlc3QgdGhlXG4gICAgICAvLyBmbHVzaC5cbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SGFuZGxlKTtcbiAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxIYW5kbGUpO1xuICAgICAgZmx1c2goKTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBUYXNrUXVldWUge1xuICBjb25zdHJ1Y3Rvcigpe1xuICAgIHRoaXMubWljcm9UYXNrUXVldWUgPSBbXTtcbiAgICB0aGlzLm1pY3JvVGFza1F1ZXVlQ2FwYWNpdHkgPSAxMDI0O1xuICAgIHRoaXMudGFza1F1ZXVlID0gW107XG5cbiAgICBpZiAodHlwZW9mIEJyb3dzZXJNdXRhdGlvbk9ic2VydmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLnJlcXVlc3RGbHVzaE1pY3JvVGFza1F1ZXVlID0gbWFrZVJlcXVlc3RGbHVzaEZyb21NdXRhdGlvbk9ic2VydmVyKCgpID0+IHRoaXMuZmx1c2hNaWNyb1Rhc2tRdWV1ZSgpKTtcbiAgICB9ZWxzZSB7XG4gICAgICB0aGlzLnJlcXVlc3RGbHVzaE1pY3JvVGFza1F1ZXVlID0gbWFrZVJlcXVlc3RGbHVzaEZyb21UaW1lcigoKSA9PiB0aGlzLmZsdXNoTWljcm9UYXNrUXVldWUoKSk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXF1ZXN0Rmx1c2hUYXNrUXVldWUgPSBtYWtlUmVxdWVzdEZsdXNoRnJvbVRpbWVyKCgpID0+IHRoaXMuZmx1c2hUYXNrUXVldWUoKSk7XG4gIH1cblxuICBxdWV1ZU1pY3JvVGFzayh0YXNrKXtcbiAgICBpZiAodGhpcy5taWNyb1Rhc2tRdWV1ZS5sZW5ndGggPCAxKSB7XG4gICAgICB0aGlzLnJlcXVlc3RGbHVzaE1pY3JvVGFza1F1ZXVlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5taWNyb1Rhc2tRdWV1ZS5wdXNoKHRhc2spO1xuICB9XG5cbiAgcXVldWVUYXNrKHRhc2spe1xuICAgIGlmICh0aGlzLnRhc2tRdWV1ZS5sZW5ndGggPCAxKSB7XG4gICAgICB0aGlzLnJlcXVlc3RGbHVzaFRhc2tRdWV1ZSgpO1xuICAgIH1cblxuICAgIHRoaXMudGFza1F1ZXVlLnB1c2godGFzayk7XG4gIH1cblxuICBmbHVzaFRhc2tRdWV1ZSgpe1xuICAgIHZhciBxdWV1ZSA9IHRoaXMudGFza1F1ZXVlLFxuICAgICAgICBpbmRleCA9IDAsXG4gICAgICAgIHRhc2s7XG5cbiAgICB0aGlzLnRhc2tRdWV1ZSA9IFtdOyAvL3JlY3Vyc2l2ZSBjYWxscyB0byBxdWV1ZVRhc2sgc2hvdWxkIGJlIHNjaGVkdWxlZCBhZnRlciB0aGUgbmV4dCBjeWNsZVxuXG4gICAgd2hpbGUgKGluZGV4IDwgcXVldWUubGVuZ3RoKSB7XG4gICAgICB0YXNrID0gcXVldWVbaW5kZXhdO1xuXG4gICAgICB0cnl7XG4gICAgICAgIHRhc2suY2FsbCgpO1xuICAgICAgfSBjYXRjaChlcnJvcil7XG4gICAgICAgIHRoaXMub25FcnJvcihlcnJvciwgdGFzayk7XG4gICAgICB9XG5cbiAgICAgIGluZGV4Kys7XG4gICAgfVxuICB9XG5cbiAgZmx1c2hNaWNyb1Rhc2tRdWV1ZSgpe1xuICAgIHZhciBxdWV1ZSA9IHRoaXMubWljcm9UYXNrUXVldWUsXG4gICAgICAgIGNhcGFjaXR5ID0gdGhpcy5taWNyb1Rhc2tRdWV1ZUNhcGFjaXR5LFxuICAgICAgICBpbmRleCA9IDAsXG4gICAgICAgIHRhc2s7XG5cbiAgICB3aGlsZSAoaW5kZXggPCBxdWV1ZS5sZW5ndGgpIHtcbiAgICAgIHRhc2sgPSBxdWV1ZVtpbmRleF07XG5cbiAgICAgIHRyeXtcbiAgICAgICAgdGFzay5jYWxsKCk7XG4gICAgICB9IGNhdGNoKGVycm9yKXtcbiAgICAgICAgdGhpcy5vbkVycm9yKGVycm9yLCB0YXNrKTtcbiAgICAgIH1cblxuICAgICAgaW5kZXgrKztcblxuICAgICAgLy8gUHJldmVudCBsZWFraW5nIG1lbW9yeSBmb3IgbG9uZyBjaGFpbnMgb2YgcmVjdXJzaXZlIGNhbGxzIHRvIGBxdWV1ZU1pY3JvVGFza2AuXG4gICAgICAvLyBJZiB3ZSBjYWxsIGBxdWV1ZU1pY3JvVGFza2Agd2l0aGluIGEgTWljcm9UYXNrIHNjaGVkdWxlZCBieSBgcXVldWVNaWNyb1Rhc2tgLCB0aGUgcXVldWUgd2lsbFxuICAgICAgLy8gZ3JvdywgYnV0IHRvIGF2b2lkIGFuIE8obikgd2FsayBmb3IgZXZlcnkgTWljcm9UYXNrIHdlIGV4ZWN1dGUsIHdlIGRvbid0XG4gICAgICAvLyBzaGlmdCBNaWNyb1Rhc2tzIG9mZiB0aGUgcXVldWUgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gZXhlY3V0ZWQuXG4gICAgICAvLyBJbnN0ZWFkLCB3ZSBwZXJpb2RpY2FsbHkgc2hpZnQgMTAyNCBNaWNyb1Rhc2tzIG9mZiB0aGUgcXVldWUuXG4gICAgICBpZiAoaW5kZXggPiBjYXBhY2l0eSkge1xuICAgICAgICAgIC8vIE1hbnVhbGx5IHNoaWZ0IGFsbCB2YWx1ZXMgc3RhcnRpbmcgYXQgdGhlIGluZGV4IGJhY2sgdG8gdGhlXG4gICAgICAgICAgLy8gYmVnaW5uaW5nIG9mIHRoZSBxdWV1ZS5cbiAgICAgICAgICBmb3IgKHZhciBzY2FuID0gMDsgc2NhbiA8IGluZGV4OyBzY2FuKyspIHtcbiAgICAgICAgICAgICAgcXVldWVbc2Nhbl0gPSBxdWV1ZVtzY2FuICsgaW5kZXhdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHF1ZXVlLmxlbmd0aCAtPSBpbmRleDtcbiAgICAgICAgICBpbmRleCA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcXVldWUubGVuZ3RoID0gMDtcbiAgfVxuXG4gIG9uRXJyb3IoZXJyb3IsIHRhc2spe1xuICAgIGlmKCdvbkVycm9yJyBpbiB0YXNrKXtcbiAgICAgIHRhc2sub25FcnJvcihlcnJvcik7XG4gICAgfSBlbHNlIGlmIChoYXNTZXRJbW1lZGlhdGUpIHtcbiAgICAgIHNldEltbWVkaWF0ZSgoKSA9PiB7IHRocm93IGVycm9yOyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHRocm93IGVycm9yOyB9LCAwKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ== |